package br.com.ebc.icontatos.converter;

import javax.annotation.Resource;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

import br.com.ebc.icontatos.model.Estado;
import br.com.ebc.icontatos.repository.EstadoRepository;

public class EstadoConverter implements Converter{

	@Resource
	private EstadoRepository estadoDAO;
	
	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		if (value == null || value.length() == 0 || value.equals("-- Selecione --")) {
            return null;
		}
		
		Long id = new Long(value);
		Estado e = new Estado();
		e.setIdEstado(id);
		e = estadoDAO.find(e.getIdEstado());
		return e;
	}

	@Override
	public String getAsString(FacesContext context, UIComponent component, Object value) {
		if(value == null){
			return null;
		}
		
		if(value instanceof Estado){
			Estado e = new Estado();
			return e.getIdEstado() == null ? "" : e.getIdEstado().toString();
		} else {
			throw new IllegalArgumentException("object " + value + " is of type " + value.getClass().getName() + "; expected type: model.Estado");
		}
	}

	public EstadoRepository getEstadoDAO() {
		return estadoDAO;
	}

	public void setEstadoDAO(EstadoRepository estadoDAO) {
		this.estadoDAO = estadoDAO;
	}

}
